package com.lnsoft.cac.server.Entity;


import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * CAC 和 CAG 之间的 维持流程处理状态的session
 */
@Slf4j
@Data
public class Command {
    private String cmd_id;                  //  CAG下发指令的统一的唯一标识
    private String cmd_type;                //  CAG下发指令类型(或名称)
    private int frameMsg_type;              //  装置使用该报文类型 上传指令执行结果；（报文类型值参考I1通信协议文档）
    private String measurepointno;          //  装置监测点

    //  配置 指令类型中 用到的参数
    private String action;
    /*
    *   指令开始时间(参数名:STARTTIME),一般对应的cmd_type:GETDATA、GETDSTATDATA、GETMSTATDATA需要指定此时间;
    *   另外，GETCONFIG中查询流量信息时也要使用此字段指定开始时间；
    * */
    private String startTime;
    /*
     *   指令开始时间(参数名:ENDTIME),一般对应的cmd_type:GETDATA、GETDSTATDATA、GETMSTATDATA需要指定此时间;
     *   另外，GETCONFIG中查询流量信息时也要使用此字段指定结束时间；
     * */
    private String endTime;

    private ByteBuf cmdFrame;           //  指令组装成将要发送的报文帧
    private String cmdResult;           //  装置接收到指令之后，返回的该指令执行的结果;收到报文后组装成标记为对应该指令的xml格式的结果；
    /**
     * 指令状态：
     * 0:指令下发装置之前，
     * 1:指令下发装置后、确认报文接收之前；
     * 2:指令下发装置、收到确认报文后，收到装置执行指令结果之前；
     * 3:收到装置执行指令结果之后；
     * 4:发送结果到CAG之后;
     */
    private int cmdStatus = 0;              //  指令执行状态
    private int timeOut = 0;                //  指令执行状态之间的超时时间，每新进入一个状态 将超时重置为0；

    public void addTimeOut(int seconds) {
        timeOut += seconds;
    }
}
